package com.jjyd.crlp.model.base;

import com.jjyd.crlp.model.code.CommonErrorCode;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 所有返回前端的model，必须包装在此类下
 * @param <T> 返回的类型
 */

@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("返回前端的model")
public class ResultModel<T> {
    /**
     * 错误编码
     */
    @ApiModelProperty(value = "错误码")
    protected String errorCode = CommonErrorCode.SUCCESS;

    /**
     * 错误信息
     */
    @ApiModelProperty(value = "错误信息")
    protected String errorMessage = "成功";

    /**
     * 数据
     */
    @ApiModelProperty(value = "返回的数据")
    protected T data;

    /**
     * 如果数据为空，则返回空错误。
     * @param data
     */
    public ResultModel(T data) {
        this.data = data;
        if (this.data == null) {
            this.errorCode = CommonErrorCode.DATA_NULL;
            this.errorMessage = "无结果";
        }
    }

    /**
     * 返回错误异常
     * @param e 抛出的异常
     */
    public ResultModel(Exception e) {
        this.errorCode = CommonErrorCode.FAILED;
        this.errorMessage = e.toString();
    }
}